# coding=utf-8
__author__ = 'liubin'

from flask import render_template, redirect, url_for
from flask.views import View
from flask.ext.login import login_required
from project import app


class IndexView(View):
    """
    index 的视图
    使用可插拔视图
    """
    # 规定可访问的方法
    methods = ['GET']
    # 装饰器放的位置
    #decorators = [login_required]

    def dispatch_request(self, **kwargs):
        """
        请求的处理
        :return:
        """
        # 返回到指定模板
        return render_template('index.html')

# url映射
app.add_url_rule('/', view_func=IndexView.as_view('index'))


class HtmlView(View):
    """
    Html 的视图
    使用可插拔视图
    """
    # 规定可访问的方法
    methods = ['GET']

    def dispatch_request(self, path, **kwargs):
        """
        请求的处理
        :return:
        """
        # 返回到指定模板
        return redirect(url_for('static', filename='app/{}.html'.format(path)))
# url映射
app.add_url_rule('/app/<path:path>.html', view_func=HtmlView.as_view('html'))


class SoundView(View):
    """
    Html 的视图
    使用可插拔视图
    """
    # 规定可访问的方法
    methods = ['GET']

    def dispatch_request(self, path, **kwargs):
        """
        请求的处理
        :return:
        """
        # 返回到指定模板
        return redirect(url_for('static', filename='sound/{}'.format(path)))
# url映射
app.add_url_rule('/sound/<path:path>', view_func=SoundView.as_view('sound'))


class ApiView(View):
    """
    Api 的视图
    使用可插拔视图
    """
    # 规定可访问的方法
    methods = ['GET']

    def dispatch_request(self, path, **kwargs):
        """
        请求的处理
        :return:
        """
        # 返回到指定模板
        return redirect(url_for('static', filename='api/{}.json'.format(path)))
# url映射
app.add_url_rule('/api/<path:path>.json', view_func=ApiView.as_view('api_json'))


class StylesView(View):
    """
    Api 的视图
    使用可插拔视图
    """
    # 规定可访问的方法
    methods = ['GET']

    def dispatch_request(self, path, **kwargs):
        """
        请求的处理
        :return:
        """
        # 返回到指定模板
        return redirect(url_for('static', filename='styles/{}'.format(path)))
# url映射
app.add_url_rule('/styles/<path:path>', view_func=StylesView.as_view('styles'))